unit form_nfipi; // Originali

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RDprint, StdCtrls, Buttons, ExtCtrls, Db, DBTables, dm;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    RDP: TRDprint;
    ed_obs: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure RDPBeforeNewPage(Sender: TObject; Pagina: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

function Imprime_NIPI(h: THandle; lpar_serie, lpar_notaini, lpar_notafim, lpar_entidade, lpar_dataini, lpar_datafim, lpar_datasaida, lpar_horasaida, lpar_impressa: pchar): boolean; export;

implementation

uses biblio, clsNotaVenda, clsEntidade, Cls_NaturezaOper, clsBackupVenda, clsEndereco,
  clsCidade, clsObsNotaVenda, clsCodFiscal;

var
  fecha, blz: boolean;
  par_serie: string;
  par_notaini: string;
  par_notafim: string;
  par_entidade: string;
  par_datasaida: string;
  par_horasaida: string;
  par_impressa: string;
  par_dataini: tdatetime;
  par_datafim: tdatetime;

{$R *.DFM}

function Imprime_NIPI;
var
  w: integer;
  dataini: string;
  datafim: string;
begin
  blz := false;
  par_serie := '';
  par_notaini := '';
  par_notafim := '';
  par_entidade := '';
  par_datasaida := '';
  par_horasaida := '';
  par_impressa := '';
  dataini := '';
  datafim := '';
  for w := 0 to length(lpar_serie) - 1 do par_serie := par_serie + lpar_serie[w];
  for w := 0 to length(lpar_notaini) - 1 do par_notaini := par_notaini + lpar_notaini[w];
  for w := 0 to length(lpar_notafim) - 1 do par_notafim := par_notafim + lpar_notafim[w];
  for w := 0 to length(lpar_entidade) - 1 do par_entidade := par_entidade + lpar_entidade[w];
  for w := 0 to length(lpar_datasaida) - 1 do par_datasaida := par_datasaida + lpar_datasaida[w];
  for w := 0 to length(lpar_horasaida) - 1 do par_horasaida := par_horasaida + lpar_horasaida[w];
  for w := 0 to length(lpar_impressa) - 1 do par_impressa := par_impressa + lpar_impressa[w];
  for w := 0 to length(lpar_dataini) - 1 do dataini := dataini + lpar_dataini[w];
  for w := 0 to length(lpar_datafim) - 1 do datafim := datafim + lpar_datafim[w];
  par_dataini := strtodate(dataini);
  par_datafim := strtodate(datafim);
  fecha := false;
  Application.Handle := h;
  form1 := TForm1.Create(Application);
  try
    form1.Width := 0;
    form1.Height := 0;
    form1.ShowModal;
  finally
    form1.free;
  end;
  result := blz;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
  nota: TNotaVenda;
  entidade: TEntidade;
  natureza: TNaturezaOper;
  backup: TBackupVenda;
  endereco: TEndereco;
  cidade: TCidade;
  ObsNotaVenda: TObsNotaVenda;
  cod_fiscal: TCodFiscal;
  tq1: TQuery;
  nota1, nota2, a5, a1, a2, a3, a4, wpar_serie, wpar_nota, wpar_entidade: string;
  linha, contador, w: integer;
  imp_nota: boolean;
  texto: atext;

begin
  SetLength(texto, 0);
  tq1 := TQuery.Create(form1);
  tq1.DatabaseName := DmInt.Db.DatabaseName;
  tq1.Active := false;
  tq1.SQL.Clear;
  tq1.Params.Clear;
  if par_impressa = 'S' then begin
    if par_serie <> '' then begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsString := StrZero(par_entidade, 5);
            tq1.Params[4].AsDateTime := par_dataini;
            tq1.Params[5].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsDateTime := par_dataini;
            tq1.Params[4].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_entidade, 5);
            tq1.Params[2].AsDateTime := par_dataini;
            tq1.Params[3].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsDateTime := par_dataini;
            tq1.Params[2].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Nota_Serie=:a ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
          end;
        end;
      end;
    end else begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsString := StrZero(par_entidade, 5);
            tq1.Params[3].AsDateTime := par_dataini;
            tq1.Params[4].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Bkp_Numero>=:b and Bkp_Numero<=:c and Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsDateTime := par_dataini;
            tq1.Params[3].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Bkp_Numero>=:b and Bkp_Numero<=:c ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_entidade, 5);
            tq1.Params[1].AsDateTime := par_dataini;
            tq1.Params[2].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'where Ent_Codigo=:d ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsDateTime := par_dataini;
            tq1.Params[1].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(Bkp_Numero),Nota_Serie,Ent_Codigo from Backup_Venda ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
          end;
        end;
      end;
    end;
  end else begin
    if par_serie <> '' then begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsString := StrZero(par_entidade, 5);
            tq1.Params[4].AsDateTime := par_dataini;
            tq1.Params[5].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c and b.Ent_Codigo=:d) and (n.Imp_NotaFiscal is null) ' +
              'and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
            tq1.Params[3].AsDateTime := par_dataini;
            tq1.Params[4].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Bkp_Numero>=:b ' +
              'and b.Bkp_Numero<=:c) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_notaini, 9);
            tq1.Params[2].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_entidade, 5);
            tq1.Params[2].AsDateTime := par_dataini;
            tq1.Params[3].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a and b.Ent_Codigo=:d) ' +
              'and (n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by Nota_Serie,Bkp_Numero,Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) ' +
              'and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
            tq1.Params[1].AsDateTime := par_dataini;
            tq1.Params[2].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Nota_Serie=:a) and ' +
              '(n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) order ' +
              'by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := par_serie;
          end;
        end;
      end;
    end else begin
      if par_notaini + par_notafim <> '' then begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsString := StrZero(par_entidade, 5);
            tq1.Params[3].AsDateTime := par_dataini;
            tq1.Params[4].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c ' +
              'and b.Ent_Codigo=:d) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and b.Bkp_Numero<=:c) ' +
              'and (n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
            tq1.Params[2].AsDateTime := par_dataini;
            tq1.Params[3].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Bkp_Numero>=:b and ' +
              'b.Bkp_Numero<=:c) and (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_notaini, 9);
            tq1.Params[1].AsString := StrZero(par_notafim, 9);
          end;
        end;
      end else begin
        if par_entidade <> '' then begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Notv_DataFat>=:e and n.Notv_DataFat<=:f and n.Imp_NotaFiscal is ' +
              'null) and (b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,' +
              'b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_entidade, 5);
            tq1.Params[1].AsDateTime := par_dataini;
            tq1.Params[2].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (b.Ent_Codigo=:d) and ' +
              '(n.Imp_NotaFiscal is null) and (b.Nota_Numero=n.Nota_Numero) ' +
              'order by b.Nota_Serie,b.Bkp_Numero,b.Ent_Codigo');
            tq1.Params[0].AsString := StrZero(par_entidade, 5);
          end;
        end else begin
          if par_dataini + par_datafim <> 0 then begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Notv_DataFat>=:e and ' +
              'n.Notv_DataFat<=:f and n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by b.Nota_Serie,b.Bkp_Numero,' +
              'b.Ent_Codigo');
            tq1.Params[0].AsDateTime := par_dataini;
            tq1.Params[1].AsDateTime := par_datafim;
          end else begin
            tq1.SQL.Add('Select distinct(b.Bkp_Numero),b.Nota_Serie,b.Ent_Codigo from ' +
              'Backup_Venda b,NotaVenda n where (n.Imp_NotaFiscal is null) and ' +
              '(b.Nota_Numero=n.Nota_Numero) order by Nota_Serie,Bkp_Numero,Ent_Codigo');
          end;
        end;
      end;
    end;
  end;
  tq1.open;
  contador := 1;
  if not tq1.eof then begin
    backup := TBackupVenda.Create;
    nota := TNotaVenda.Create;
    natureza := TNaturezaOper.Create;
    cod_fiscal := TCodFiscal.Create;
    entidade := TEntidade.Create;
    endereco := TEndereco.Create;
    cidade := TCidade.Create;
    ObsNotaVenda := TObsNotaVenda.Create;
    with rdp do begin
      Abrir;
      while not tq1.eof do begin
        if contador > 1 then begin
          rdp.NovaPagina;
        end;

        contador := contador + 1;
        wpar_serie := tq1.fieldbyname('Nota_Serie').asstring;
        wpar_nota := tq1.fieldbyname('Bkp_Numero').asstring;
        wpar_entidade := tq1.fieldbyname('Ent_Codigo').asstring;
        backup.RecuperarNota(wpar_serie, wpar_nota, nota1, nota2);
        imp_nota := true;
        if nota.QRecuperar(wpar_serie, nota1, wpar_entidade) = 0 then begin
          imp_nota := false;
        end;

        blz := imp_nota;
        if imp_nota then begin
          natureza.Recuperar(nota.Codf_codigo, nota.Nato_codigo);

          impf(02, 71, wpar_nota, [negrito, comp12]);

          cod_fiscal.Recuperar(nota.Codf_codigo);

          if cod_fiscal.CodF_Tipo = 'S' then begin
            impf(02, 52, 'X', [negrito]);
          end else begin
            impf(02, 61, 'X', [negrito]);
          end;

          impf(07, 01, ' ' + copy(natureza.Nato_Descricao, 1, 27), [comp17]);
          impf(07, 26, nota.Codf_codigo, [comp17]);
          entidade.Recuperar(wpar_entidade);
          impf(11, 02, ' ' + copy(entidade.Ent_Nome, 1, 50) + ' - ' + wpar_entidade, [comp17]);

          if entidade.Ent_Cnpj <> '' then begin
            a1 := copy(entidade.Ent_Cnpj, 1, 2);
            a2 := copy(entidade.Ent_Cnpj, 3, 3);
            a3 := copy(entidade.Ent_Cnpj, 6, 3);
            a4 := copy(entidade.Ent_Cnpj, 9, 4);
            a5 := copy(entidade.Ent_Cnpj, 13, 2);
            impf(11, 52, a1 + '.' + a2 + '.' + a3 + '/' + a4 + '-' + a5, [comp17]);

          end else begin
            impf(11, 52, entidade.Ent_Cpf, [comp17]);

          end;

          if nota.Notv_datafat <> 0 then begin
            impf(11, 72, ' ' + datetostr(nota.Notv_datafat), [comp17]);
          end;

          if not endereco.Recuperar_Endereco(wpar_entidade, '01') then begin
            endereco.Recuperar_primeiro(wpar_entidade);
          end;

          impf(13, 01, ' ' + endereco.End_Endereco, [comp17]);
          impf(13, 42, endereco.End_bairro, [comp17]);
          impf(13, 59, endereco.End_Cep, [comp17]);
          impf(13, 72, ' ' + par_datasaida, [comp17]);
          cidade.Recuperar(endereco.Cid_Codigo);
          impf(15, 01, ' ' + copy(cidade.Cid_Nome, 1, 39), [comp17]);
          impf(15, 30, '(' + cidade.Cid_ddd + ') ' + endereco.End_Fone, [comp17]);
          impf(15, 48, cidade.Cid_est_sigla, [comp17]);
          impf(15, 53, entidade.Ent_Inscest, [comp17]);
          impf(15, 72, ' ' + par_horasaida, [comp17]);

          linha := 24;
          ObsNotaVenda.Recuperar(nota1, nota2, wpar_serie, wpar_entidade);
          ed_obs.text := nota.Notv_Mensagem;

          texto := Ret_TextJ(ed_obs.text, 70);
          for w := 0 to length(texto) - 1 do begin
            impf(linha, 02, texto[w], [comp17]);
            linha := linha + 1;
          end;

          {linha := 24;
          ImpF(linha, 59, Format_Valor(nota.Notv_totalproduto), [comp17]);
          if nota.Notv_ipi <> 0 then begin
            ImpF(linha, 72, IntToStr(iv((100 * nota.Notv_ipi) / nota.Notv_totalproduto)), [comp17]);
            ImpF(linha, 75, CritPadL(FloatToStrF(nota.Notv_ipi, ffNumber, 15, 2), 8, ' '), [comp17]);
          end;}

          impf(38, 02, format_valor(nota.Notv_bcalicms), [comp17]);
          impf(38, 16, format_valor(nota.Notv_icms), [comp17]);
          impf(38, 30, '             -', [comp17]);
          impf(38, 44, '             -', [comp17]);
          impf(38, 62, '             -', [comp17]);
          impf(40, 02, '             -', [comp17]);
          impf(40, 16, '             -', [comp17]);
          impf(40, 30, '             -', [comp17]);
          impf(40, 44, format_valor(nota.Notv_ipi), [comp17]);
          impf(40, 62, format_valor(nota.Notv_valorcontabil), [comp17]);

          impf(47, 36, wpar_nota, [comp17]);

          impf(62, 04, ' ' + wpar_nota, [comp17, negrito]);

        end;

        tq1.next;

      end;

      Setup;
      Fechar;

    end;

    backup.free;
    nota.free;
    natureza.free;
    cod_fiscal.free;
    entidade.free;
    endereco.free;
    cidade.free;
    ObsNotaVenda.free;

  end;

  tq1.close;
  tq1.free;
  fecha := true;
  Timer1.Interval := 1;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (fecha) then begin
    //Application.Terminate;
    Close;

  end;

end;

procedure TForm1.RDPBeforeNewPage(Sender: TObject; Pagina: Integer);
begin
  if rdp.Impressora = Epson then begin
    rdp.acentuacao := SemAcento;
  end else begin
    rdp.acentuacao := Transliterate;
  end;

end;

initialization begin
    dmint := TDmint.Create(application);
  end;

finalization begin
    dmint.free;
  end;

end.

